﻿namespace TierraReborn
{
    public class GenebankManager
    {
        //Mutations result in the appearance of new genotypes, which are watched
        //by an automated genebank manager.  In one implementation of the manager,
        //when new genotypes replicate twice, producing a genetically identical
        //offspring at least once, they are given a unique name and saved to disk.
        //Each genotype name contains two parts, a number and a three letter code.
        //The number represents the number of instructions in the genome.  The three
        //letter code is used as a base 26 numbering system for assigning a unique
        //label to each genotype in a size class.  The first genotype to appear in
        //a size class is assigned the label aaa, the second is assigned the label
        //aab, and so on.  Thus the ancestor is named 80aaa, and the first mutant
        //of size 80 is named 80aab.  The first creature of size 45 is named 45aaa.

        //The genebanker saves some additional information with each genome: the
        //genotype name of its immediate ancestor which makes possible the
        //reconstruction of the entire phylogeny; the time and date of origin;
        //``metabolic'' data including the number of instructions executed in the
        //first and second reproduction, the number of errors generated in the first
        //and second reproduction, and the number of instructions copied into the
        //daughter cell in the first and second reproductions (see Appendix C, D); some
        //environmental parameters at the time of origin including the search limit
        //for addressing, and the slicer power, both of which affect selection for size.
    }
}
